home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-12-19 | 2.9 KB | 73 lines | [TEXT/PRLG] |
- simple_modal_dialog :-
- purge_events(dialog),
- new_dialog('Dialog Samples',128,Reference),
- wait_for_event(dialog,[Reference,Item]),(Item==1;Item==2),
- (Item==1 /* 1 is the OK button */ -> beep;true),
- close_dialog(Reference).
-
- smarter_modal_dialog :-
- purge_events(dialog),
- new_dialog('Dialog Samples','Smart Dialog',Reference),
- wait_for_event(dialog,[Reference,Item]),
- process_smarter_dialog_hits(Item,Reference),
- close_dialog(Reference).
-
- process_smarter_dialog_hits(1,Reference) :- %1 is the Beep button
- %disable controls while beeping…
- set_dialog_property([Reference,1],active(false)),
- set_dialog_property([Reference,2],active(false)),
- set_dialog_property([Reference,4],active(false)),
- beep, %give one beep anyway
- current_dialog_property([Reference,4],value(X)), %4 is the check box
- (X==1->beep;true),
- %re-enable the controls…
- set_dialog_property([Reference,1],active(true)),
- set_dialog_property([Reference,2],active(true)),
- set_dialog_property([Reference,4],active(true)),
- wait_for_event(dialog,[Reference,Item]),!,
- process_smarter_dialog_hits(Item,Reference).
- process_smarter_dialog_hits(2,Reference). %2 is the Cancel button
- process_smarter_dialog_hits(4,Reference) :- %4 is the Check Box button
- toggle([Reference,4]),
- wait_for_event(dialog,[Reference,Item]),!,
- process_smarter_dialog_hits(Item,Reference).
-
- toggle(Ref) :-
- current_dialog_property(Ref,value(V)),
- toggle_value(V,I),
- set_dialog_property(Ref,value(I)).
-
- toggle_value(0,1).
- toggle_value(1,0).
-
- modeless_dialogs :-
- purge_events(dialog),
- new_dialog('Dialog Samples','Plus',PlusRef),
- new_dialog('Dialog Samples','Minus',MinusRef),
- wait_for_event(dialog,[Reference,Item]),
- process_modeless_dialog_hits(Item,Reference,PlusRef,MinusRef),
- close_dialog(MinusRef),
- close_dialog(PlusRef).
-
- process_modeless_dialog_hits(1,_,_,_) :- !. % Item 1 - the ‘Close’ button
- process_modeless_dialog_hits(1000,_,_,_) :- !. % Close Box or Close Menu
- process_modeless_dialog_hits(_,Ref,PlusRef,MinusRef) :- %all other items
- current_dialog_property([Ref,2],value(N1)),
- current_dialog_property([Ref,4],value(N2)),
- (number(N1),number(N2)->
- (Ref==PlusRef->V is N1+N2;Ref==MinusRef->V is N1-N2);
- V = 'value!'),
- set_dialog_property([Ref,6],value(V)),
- wait_for_event(dialog,[Reference,Item]),
- process_modeless_dialog_hits(Item,Reference,PlusRef,MinusRef).
-
- modeless_beep_dialog :-
- new_dialog('Dialog Samples','Modeless Beep',_).
-
- handle_dialog_interrupt([D|Spec]) :-
- current_dialog_property([D],name('Beeper')),
- process_modeless_beep_dialog([D|Spec]).
-
- process_modeless_beep_dialog([_,1]) :- beep.
- process_modeless_beep_dialog([D,1000]) :- close_dialog(D).
-